import 'package:enterprise_v6_app/app/components/toast_widget.dart';
import 'package:enterprise_v6_app/app/core/http/http.dart';
import 'package:enterprise_v6_app/app/core/utils/interface.dart';
import 'package:enterprise_v6_app/app/data/entities/application/role_personnel_entity.dart';
import 'package:get/get.dart';

class PersonnelSelectionController extends GetxController {
  Map<String, dynamic> queryParameters = {}; // 请求参数
  bool? isRadio; // 是否单选
  List<RolePersonnelEntity> dataList = []; //显示的数据列表
  List<RolePersonnelEntity> selectedList = []; // 选中的列表

  @override
  void onInit() {
    super.onInit();
    final Map<String, dynamic> arguments = Get.arguments as Map<String, dynamic>;
    final Map<String, dynamic> query = arguments['queryParameters'] as Map<String, dynamic>;
    for (var key in query.keys) {
      //获取请求参数
      queryParameters[key] = query[key];
    }
    //获取是否单选
    isRadio = arguments['isRadio'] as bool;
    getDate();
  }

  /// 获取人员列表数据
  Future<List<RolePersonnelEntity>> getDate({String? search}) async {
    queryParameters['nickName'] = search;
    // 调用接口
    // 获取人员单位接口
    final res = await HttpUtil().generateGetRequest<List<RolePersonnelEntity>>(Interface.getRoleUserList, queryParameters: queryParameters).execute();

    List<RolePersonnelEntity>? data;
    res.onSuccess((result) {
      data = result.data;
    });
    dataList.addAll(data ?? []);
    return data ?? [];
  }

  /// 选择点击事件
  void onTap(RolePersonnelEntity item) {
    //如果是单选
    if (isRadio ?? true) {
      for (var selectItem in selectedList) {
        //清空之前选中的数据
        selectItem.setIsChecked(false);
      }
      item.setIsChecked(true);
      selectedList.clear();
      selectedList.add(item);
    } else {
      //判断点击前的状态
      final bool isChecked = item.getIsChecked();
      if (isChecked) {
        //如果之前是选中的，就修改状态后移出
        item.setIsChecked(false);
        selectedList.remove(item);
      } else {
        //如果之前是未选中的，就修改状态后添加
        item.setIsChecked(true);
        selectedList.add(item);
      }
    }
    update();
  }

  ///完成
  void complete() {
    if (selectedList.isEmpty) {
      AppToast.show('请选择人员');
      return;
    }
    Get.back(result: selectedList);
  }
}
